package com.unionpay.upyzt.resp;

import com.unionpay.upyzt.param.AcctValidationParam;
import com.unionpay.upyzt.param.FailureMsgParam;
import java.time.LocalDateTime;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.experimental.Accessors;

import java.util.List;
import java.util.Map;

@Getter
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
public class MchApplicationResp extends UpyztResp {
    /**
     * 申请状态
     */
    private String applicationStatus;

    /**
     * 二级商户 Id
     */
    private String mchId;

    /**
     * 账户验证通过时间
     */
    private LocalDateTime acctVerifiedAt;

    /**
     * 审核通过时间
     */
    private LocalDateTime auditedAt;

    /**
     * 进件申请通过时间
     */
    private LocalDateTime succeededAt;

    /**
     * 进件申请失败时间
     */
    private LocalDateTime failedAt;

    /**
     * 汇款状态验证信息
     */
    private AcctValidationParam acctValidation;

    /**
     * 审核失败原因列表
     */
    private List<FailureMsgParam> failureMsgs;

    /**
     * 业务申请单号
     */
    private String outRequestNo;

    /**
     * 二级商户进件申请 Id
     */
    private String mchApplicationId;

    /**
     * 电子账簿账簿号
     */
    private String relAcctNo;

    /**
     * 银行生成的户名
     */
    private String bindAcctName;

    /**
     * 电子账簿ID
     */
    private String balanceAcctId;

    /**
     * 绑定账户ID：当进件状态为 account_need_verify 或 succeeded 时返回
     */
    private String settleAcctId;

    /**
     * 自定义参数
     */
    private Map<String, Object> metadata;

    /**
     * 拓展字段配合业务参数
     */
    private Map<String, Object> extra;
}
